(1) Field of the Invention
The present invention relates to a task execution device which allocates execution time to tasks to be executed in a Central Processing Unit (CPU), in other words, relates to an Operating System (OS).
(2) Description of the Related Art
The main functions of the OS are “hardware management”, “task management”, “data management” and “input/output management”. Above all, “task management” refers to the management of the task execution sequence, and is an important function for making a CPU, a memory, an input/output device, and so on, operate effectively. Here, a “task” is a unit of control which manages a series of flows, such as the start-up, execution and completion of a program, as a batch. A program which operates under the OS's management is handled as a task. The tasks in every OS operation related to the execution of a program are performed as units.
The time-sharing scheduling method is well-known as an example of an algorithm which determines a task execution sequence. The time-sharing scheduling method is a task scheduling method which allocates an execution time for each task, applies the allocated times to tasks in the CPU which have execution permission, and when the times allocated for the tasks elapse, transfers execution permission to other tasks. By doing so, execution permission is assigned for every task by an equal and determined time.
There are methods for the determination of the allocated time such as a method of fixed allocation according to a task's properties, and a method of dynamic determination according to the task's execution conditions, and for instance, methods such as adjusting the allocated time for the execution permission, based on task priority, are well known (see for example, Japanese Laid-Open Patent Application No. 2005-18560 Publication).
However, in the case where a task is shifted to a waiting state when it must wait for an event, conventional OSs will transfer execution permission to a subsequent task, or execute no processes until the allocated time has expired for the task shifted to the waiting state. Also, in an execution environment where tasks which need a guarantee of process performance, and tasks for which processes are generated asynchronously, such as an event driven process, co-exist, asynchronous processes must be executed while continuously distributing process performance and maintaining the cycle for the entire process is maintained. As a result there are the problems that overhead occurs, and processing power drops due to the continuous adjustment and execution of the allocated time.